﻿<!DOCTYPE HTML>
<!-- saved from url=(0078)http://172.13.19.31:6060/note_html/服务器/CentOS/11008-shell-echo、printf.html -->
<!DOCTYPE html PUBLIC "" ""><HTML><HEAD><META content="IE=11.0000" 
http-equiv="X-UA-Compatible">
 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>shell-echo、printf</TITLE> <LINK href="shell-echo、printf_files/standalone.css" 
rel="stylesheet"> <LINK href="shell-echo、printf_files/overlay-apple.css" rel="stylesheet"> 
<LINK href="shell-echo、printf_files/article_edit.css" rel="stylesheet"> 
<STYLE type="text/css">
	#content{
		margin: 5px 10px;
	}
</STYLE>
	 <!-- 代码高亮 -->	 <LINK href="shell-echo、printf_files/shCoreEclipse.css" rel="stylesheet">
	 <LINK href="shell-echo、printf_files/my-highlighter.css" rel="stylesheet"> 
<META name="GENERATOR" content="MSHTML 11.00.10586.545"></HEAD> 
<BODY>
<DIV id="content">
<H1 align="center">shell-echo、printf</H1>
<P align="right" 
style="margin: 0px 10px 0px 0px; padding: 0px;">最后修改时间：2015-09-03 17:58:53</P>
<HR style="border-width: 2px; border-color: lime;">

<H3>echo命令</H3>
<PRE class="brush: bash;">echo是Shell的一个内部指令，用于在屏幕上打印出指定的字符串。命令格式：

    echo arg

您可以使用echo实现更复杂的输出格式控制。
显示转义字符

    echo "\"It is a test\""

结果将是：
"It is a test"

双引号也可以省略。
显示变量

    name="OK"
    echo "$name It is a test"

结果将是：
OK It is a test

同样双引号也可以省略。

如果变量与其它字符相连的话，需要使用大括号（{ }）：

    mouth=8
    echo "${mouth}-1-2009"

结果将是：
8-1-2009
显示换行

    echo "OK!\n"
    echo "It is a test"

输出：
OK!
It is a test
显示不换行

    echo "OK!\c"
    echo "It is a test"

输出：
OK!It si a test
显示结果重定向至文件

    echo "It is a test" &gt; myfile

原样输出字符串
若需要原样输出字符串（不进行转义），请使用单引号。例如：

    echo '$name\"'

显示命令执行结果

    echo `date`

结果将显示当前日期

从上面可看出，双引号可有可无，单引号主要用在原样输出中。
</PRE>
<H3>printf命令</H3>
<PRE class="brush: bash;">printf 命令用于格式化输出， 是echo命令的增强版。它是C语言printf()库函数的一个有限的变形，并且在语法上有些不同。

注意：printf 由 POSIX 标准所定义，移植性要比 echo 好。

如同 echo 命令，printf 命令也可以输出简单的字符串：

    $printf "Hello, Shell\n"
    Hello, Shell
    $

printf 不像 echo 那样会自动换行，必须显式添加换行符(\n)。

printf 命令的语法：

printf  format-string  [arguments...]

format-string 为格式控制字符串，arguments 为参数列表。

printf()在C语言入门教程中已经讲到，功能和用法与 printf 命令类似，请查看：C语言格式输出函数printf()详解

这里仅说明与C语言printf()函数的不同：

    printf 命令不用加括号
    format-string 可以没有引号，但最好加上，单引号双引号均可。
    参数多于格式控制符(%)时，format-string 可以重用，可以将所有参数都转换。
    arguments 使用空格分隔，不用逗号。


请看下面的例子：

    # format-string为双引号
    $ printf "%d %s\n" 1 "abc"
    1 abc
    # 单引号与双引号效果一样 
    $ printf '%d %s\n' 1 "abc" 
    1 abc
    # 没有引号也可以输出
    $ printf %s abcdef
    abcdef
    # 格式只指定了一个参数，但多出的参数仍然会按照该格式输出，format-string 被重用
    $ printf %s abc def
    abcdef
    $ printf "%s\n" abc def
    abc
    def
    $ printf "%s %s %s\n" a b c d e f g h i j
    a b c
    d e f
    g h i
    j
    # 如果没有 arguments，那么 %s 用NULL代替，%d 用 0 代替
    $ printf "%s and %d \n" 
    and 0
    # 如果以 %d 的格式来显示字符串，那么会有警告，提示无效的数字，此时默认置为 0
    $ printf "The first program always prints'%s,%d\n'" Hello Shell
    -bash: printf: Shell: invalid number
    The first program always prints 'Hello,0'
    $


注意，根据POSIX标准，浮点格式%e、%E、%f、%g与%G是“不需要被支持”。这是因为awk支持浮点预算，且有它自己的printf语句。这样Shell程序中需要将
浮点数值进行格式化的打印时，可使用小型的awk程序实现。然而，内建于bash、ksh93和zsh中的printf命令都支持浮点格式。 
</PRE>
<HR style="border-width: 2px; border-color: lime;">

<DIV align="center">©copyright 版权所有   作者：zzy</DIV>
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shCore.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/init.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/js/jquery.tools.min.js" type="text/javascript"></SCRIPT>
 <!-- make all links with the 'rel' attribute open overlays --> 
<SCRIPT>
  $(function() {
      $("#apple img[rel]").overlay({effect: 'apple'});
    });
</SCRIPT>
 </DIV></BODY></HTML>
